home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / misc / amicvs1-0.lha / AmiCVS / emacs / lisp-adds / pcl-cvs / pcl-cvs.elc < prev    next >
Encoding:
Text File  |  1994-11-04  |  52.6 KB  |  809 lines

  1.  
  2. (require (quote cookie))
  3.  
  4. (provide (quote pcl-cvs))
  5.  
  6. (defvar cvs-program "/usr/gnu/bin/cvs" "\
  7. *Full path to the cvs executable.")
  8.  
  9. (defvar cvs-diff-program "/usr/gnu/bin/diff" "\
  10. *Full path to the diff program.")
  11.  
  12. (defvar cvs-rmdir-program "/usr/gnu/bin/rmdir" "\
  13. *Full path to the rmdir program. Typically /bin/rmdir.")
  14.  
  15. (defvar cvs-tempdir "/tmp" "\
  16. *Directory for temporary stuff")
  17.  
  18. (defvar cvs-shell "/bin/sh" "\
  19. *Full path to a shell that can do redirection on stdout.")
  20.  
  21. (defvar cvs-cvsroot nil "\
  22. *Specifies where the (current) cvs master repository is.
  23. Overrides the $CVSROOT variable by sending \" -d dir\" to all cvs commands.
  24. This switch is useful if you have multiple CVS repositories.")
  25.  
  26. (defvar cvs-stdout-file nil "\
  27. Name of the file that holds the output that CVS sends to stdout.
  28. This variable is buffer local.")
  29.  
  30. (defvar cvs-lock-file nil "\
  31. Full path to a lock file that CVS is waiting for (or was waiting for).")
  32.  
  33. (defvar cvs-bakprefix ".#" "\
  34. The prefix that CVS prepends to files when rcsmerge'ing.")
  35.  
  36. (defvar cvs-erase-input-buffer nil "\
  37. *Non-nil if input buffers should be cleared before asking for new info.")
  38.  
  39. (defvar cvs-auto-remove-handled nil "\
  40. *Non-nil if cvs-mode-remove-handled should be called automatically.
  41. If this is set to any non-nil value entries that does not need to be
  42. checked in will be removed from the *cvs* buffer after every cvs-mode-commit
  43. command.")
  44.  
  45. (defvar cvs-sort-ignore-file t "\
  46. *Non-nil if cvs-mode-ignore should sort the .cvsignore automatically.")
  47.  
  48. (defvar cvs-auto-revert-after-commit t "\
  49. *Non-nil if committed buffers should be automatically reverted.")
  50.  
  51. (defconst cvs-cursor-column 14 "\
  52. Column to position cursor in in cvs-mode.
  53. Column 0 is left-most column.")
  54.  
  55. (defvar cvs-mode-map nil "\
  56. Keymap for the cvs mode.")
  57.  
  58. (defvar cvs-edit-mode-map nil "\
  59. Keymap for the cvs edit mode (used when editing cvs log messages).")
  60.  
  61. (defvar cvs-buffer-name "*cvs*" "\
  62. Name of the cvs buffer.")
  63.  
  64. (defvar cvs-commit-prompt-buffer "*cvs-commit-message*" "\
  65. Name of buffer in which the user is prompted for a log message when
  66. committing files.")
  67.  
  68. (defvar cvs-commit-buffer-require-final-newline t "\
  69. *t says silently put a newline at the end of commit log messages.
  70. Non-nil but not t says ask user whether to add a newline in each such case.
  71. nil means don't add newlines.")
  72.  
  73. (defvar cvs-temp-buffer-name "*cvs-tmp*" "\
  74. *Name of the cvs temporary buffer.
  75. Output from cvs is placed here by synchronous commands.")
  76.  
  77. (defvar cvs-diff-ignore-marks nil "\
  78. *Non-nil if cvs-diff and cvs-mode-diff-backup should ignore any marked files.
  79. Normally they run diff on the files that are marked (with cvs-mode-mark),
  80. or the file under the cursor if no files are marked.  If this variable
  81. is set to a non-nil value they will always run diff on the file on the
  82. current line.")
  83.  
  84. (defvar cvs-status-flags nil "\
  85. *List of strings to pass to ``cvs status''.")
  86.  
  87. (defvar cvs-log-flags nil "\
  88. *List of strings to pass to ``cvs log''.")
  89.  
  90. (defvar cvs-diff-flags nil "\
  91. *List of strings to use as flags to pass to ``diff'' and ``cvs diff''.
  92. Used by cvs-mode-diff-cvs and cvs-mode-diff-backup.
  93. Set this to '(\"-u\") to get a Unidiff format, or '(\"-c\") to get context diffs.")
  94.  
  95. (defvar cvs-update-prog-output-skip-regexp "$" "\
  96. *A regexp that matches the end of the output from all cvs update programs.
  97. That is, output from any programs that are run by CVS (by the flag -u
  98. in the `modules' file - see cvs(5)) when `cvs update' is performed should
  99. terminate with a line that this regexp matches.  It is enough that
  100. some part of the line is matched.
  101.  
  102. The default (a single $) fits programs without output.")
  103.  
  104. (defvar cvs-buffers-to-delete nil "\
  105. List of temporary buffers that should be discarded as soon as possible.
  106. Due to a bug in emacs 18.57 the sentinel can't discard them reliably.")
  107.  
  108. (defvar cvs-inhibit-copyright-message nil "\
  109. *Non-nil means don't display a Copyright message in the ``*cvs*'' buffer.")
  110.  
  111. (defconst pcl-cvs-version "1.05" "\
  112. A string denoting the current release version of pcl-cvs.")
  113.  
  114. (defconst cvs-startup-message (if cvs-inhibit-copyright-message "PCL-CVS release 1.05" "PCL-CVS release 1.05.  Copyright (C) 1992, 1993 Per Cederqvist
  115. Modified to run on Amiga by Reiner B. Nix 4-Nov-94.
  116. Pcl-cvs comes with absolutely no warranty; for details consult the manual.
  117. This is free software, and you are welcome to redistribute it under certain
  118. conditions; again, consult the TeXinfo manual for details.") "*Startup message for CVS.")
  119.  
  120. (defvar cvs-update-running nil "\
  121. This is set to nil when no process is running, and to
  122. the process when a cvs update process is running.")
  123.  
  124. (defvar cvs-cookie-handle nil "\
  125. Handle for the cookie structure that is displayed in the *cvs* buffer.")
  126.  
  127. (defvar cvs-mode-commit nil "\
  128. Used internally by pcl-cvs.")
  129.  
  130. (defun cvs-create-fileinfo (type dir file-name full-log) "\
  131. Create a fileinfo from all parameters.
  132. Arguments: TYPE DIR FILE-NAME FULL-LOG.
  133. A fileinfo has the following fields:
  134.  
  135.   marked        t/nil
  136.   type              One of
  137.             UPDATED       - file copied from repository
  138.             MODIFIED   - modified by you, unchanged in
  139.                      repository
  140.             ADDED       - added by you, not yet committed
  141.             REMOVED       - removed by you, not yet committed
  142.             CVS-REMOVED- removed, since file no longer exists
  143.                      in the repository.
  144.             MERGED       - successful merge
  145.             CONFLICT   - conflict when merging
  146.             REM-CONFLICT-removed in repository, but altered
  147.                      locally.
  148.             MOD-CONFLICT-removed locally, changed in repository.
  149.                         REM-EXIST  - removed locally, but still exists.
  150.             DIRCHANGE  - A change of directory.
  151.             UNKNOWN       - An unknown file.
  152.             MOVE-AWAY  - A file that is in the way.
  153.             REPOS-MISSING- The directory has vanished from the
  154.                        repository.
  155.                         MESSAGE    - This is a special fileinfo that is used
  156.                          to display a text that should be in
  157.                                        full-log.
  158.   dir              Directory the file resides in. Should not end with slash.
  159.   file-name          The file name.
  160.   backup-file          Name of the backup file if MERGED or CONFLICT.
  161.   cvs-diff-buffer     A buffer that contains a 'cvs diff file'.
  162.   backup-diff-buffer  A buffer that contains a 'diff file backup-file'.
  163.   full-log          The output from cvs, unparsed.
  164.   mod-time          Modification time of file used for *-diff-buffer.
  165.   handled          True if this file doesn't require further action." (byte-code "ÅÆÀÀ    
  166. ÀÀÀ À&
  167. B‡" [nil type dir file-name full-log CVS-FILEINFO vector] 12))
  168.  
  169. (defun cvs-fileinfo->handled (cvs-fileinfo) "\
  170. Get the  `handled' field from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 0] 3))
  171.  
  172. (defun cvs-fileinfo->marked (cvs-fileinfo) "\
  173. Check if CVS-FILEINFO is marked." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 1] 3))
  174.  
  175. (defun cvs-fileinfo->type (cvs-fileinfo) "\
  176. Get type from CVS-FILEINFO.
  177. Type is one of UPDATED, MODIFIED, ADDED, REMOVED, CVS-REMOVED, MERGED,
  178. CONFLICT, REM-CONFLICT, MOD-CONFLICT, REM-EXIST, DIRCHANGE, UNKNOWN, MOVE-AWAY,
  179. REPOS-MISSING or MESSAGE." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 2] 3))
  180.  
  181. (defun cvs-fileinfo->dir (cvs-fileinfo) "\
  182. Get dir from CVS-FILEINFO.
  183. The directory name does not end with a slash. " (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 3] 3))
  184.  
  185. (defun cvs-fileinfo->file-name (cvs-fileinfo) "\
  186. Get file-name from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 4] 3))
  187.  
  188. (defun cvs-fileinfo->base-revision (cvs-fileinfo) "\
  189. Get the base revision from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 5] 3))
  190.  
  191. (defun cvs-fileinfo->cvs-diff-buffer (cvs-fileinfo) "\
  192. Get cvs-diff-buffer from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 6] 3))
  193.  
  194. (defun cvs-fileinfo->backup-diff-buffer (cvs-fileinfo) "\
  195. Get backup-diff-buffer from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 7] 3))
  196.  
  197. (defun cvs-fileinfo->full-log (cvs-fileinfo) "\
  198. Get full-log from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 8] 3))
  199.  
  200. (defun cvs-fileinfo->mod-time (cvs-fileinfo) "\
  201. Get mod-time from CVS-FILEINFO." (byte-code "ÁAÂ\"‡" [cvs-fileinfo elt 9] 3))
  202.  
  203. (defun cvs-set-fileinfo->handled (cvs-fileinfo newval) "\
  204. Set handled in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 0] 3))
  205.  
  206. (defun cvs-set-fileinfo->marked (cvs-fileinfo newval) "\
  207. Set marked in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 1] 3))
  208.  
  209. (defun cvs-set-fileinfo->type (cvs-fileinfo newval) "\
  210. Set type in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 2] 3))
  211.  
  212. (defun cvs-set-fileinfo->dir (cvs-fileinfo newval) "\
  213. Set dir in CVS-FILEINFO to NEWVAL.
  214. The directory should now end with a slash." (byte-code "A    I‡" [cvs-fileinfo newval 3] 3))
  215.  
  216. (defun cvs-set-fileinfo->file-name (cvs-fileinfo newval) "\
  217. Set file-name in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 4] 3))
  218.  
  219. (defun cvs-set-fileinfo->base-revision (cvs-fileinfo newval) "\
  220. Set base-revision in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 5] 3))
  221.  
  222. (defun cvs-set-fileinfo->cvs-diff-buffer (cvs-fileinfo newval) "\
  223. Set cvs-diff-buffer in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 6] 3))
  224.  
  225. (defun cvs-set-fileinfo->backup-diff-buffer (cvs-fileinfo newval) "\
  226. Set backup-diff-buffer in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 7] 3))
  227.  
  228. (defun cvs-set-fileinfo->full-log (cvs-fileinfo newval) "\
  229. Set full-log in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 8] 3))
  230.  
  231. (defun cvs-set-fileinfo->mod-time (cvs-fileinfo newval) "\
  232. Set full-log in CVS-FILEINFO to NEWVAL." (byte-code "A    I‡" [cvs-fileinfo newval 9] 3))
  233.  
  234. (defun cvs-fileinfo-p (object) "\
  235. Return t if OBJECT is a cvs-fileinfo." (byte-code "Á!Â=‡" [object car-safe CVS-FILEINFO] 3))
  236.  
  237. (defun cvs-use-temp-buffer nil "\
  238. Display a temporary buffer in another window and select it.
  239. The selected window will not be changed.  The temporary buffer will
  240. be erased and writable." (byte-code "    ÅÆ
  241. !!ˆ
  242. qˆÄ‰ˆ‰ˆÇ )‡" [dir default-directory cvs-temp-buffer-name buffer-read-only nil display-buffer get-buffer-create erase-buffer] 4))
  243.  
  244. (defun cvs-update (directory &optional local) "\
  245. Run a 'cvs update' in the current working directory. Feed the
  246. output to a *cvs* buffer and run cvs-mode on it.
  247. If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run." (interactive (byte-code "ÃÄÀ    À$
  248. D‡" [nil default-directory current-prefix-arg read-file-name "CVS Update (directory): "] 5)) (byte-code "ÀˆÆ À#ˆÇ!‡" [nil default-directory current-prefix-arg directory local cvs-buffer-name cvs-do-update switch-to-buffer] 4))
  249.  
  250. (defun cvs-update-other-window (directory &optional local) "\
  251. Run a 'cvs update' in the current working directory. Feed the
  252. output to a *cvs* buffer, display it in the other window, and run
  253. cvs-mode on it.
  254.  
  255. If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run." (interactive (byte-code "ÃÄÀ    À$
  256. D‡" [nil default-directory current-prefix-arg read-file-name "CVS Update other window (directory): "] 5)) (byte-code "ÀˆÆ À#ˆÇ!‡" [nil default-directory current-prefix-arg directory local cvs-buffer-name cvs-do-update switch-to-buffer-other-window] 4))
  257.  
  258. (defun cvs-filter (predicate list &rest extra-args) "\
  259. Apply PREDICATE to each element on LIST.
  260. Args: PREDICATE LIST &rest EXTRA-ARGS.
  261. Return a new list consisting of those elements that PREDICATE
  262. returns non-nil for.
  263.  
  264. If more than two arguments are given the remaining args are
  265. passed to PREDICATE." (byte-code "ÆÁB …$Ç @#…È
  266. @C\"‰ˆ A‰ˆ‚ˆA*‡" [head nil tail list predicate extra-args dummy-header apply setcdr] 5))
  267.  
  268. (defun cvs-mode-update-no-prompt nil "\
  269. Run cvs update in current directory." (interactive) (byte-code "ÁˆÂÁÁ#‡" [default-directory nil cvs-do-update] 4))
  270.  
  271. (defun cvs-do-update (directory local dont-change-disc) "\
  272. Do a 'cvs update' in DIRECTORY.
  273. Args: DIRECTORY LOCAL DONT-CHANGE-DISC &optional NOTTHISWINDOW.
  274. If LOCAL is non-nil 'cvs update -l' is executed.
  275. If DONT-CHANGE-DISC is non-nil 'cvs -n update' is executed.
  276. Both LOCAL and DONT-CHANGE-DISC may be non-nil simultaneously.
  277.  
  278. *Note*: DONT-CHANGE-DISC does not yet work. The parser gets confused." (byte-code "× ˆØ!?…ÙÚ\"ˆÛÜ!†    ?…ÙÝ!ˆÞß !!àá
  279. âãO!äP!åÞÛæ!†9!çP!Èè
  280. !?…LÙé
  281. \"ˆè
  282. êP!?…ZÙë
  283. \"ˆ    …vì    !…vì    !í=†vì    !î=…|Ùï!ˆ    …„ð    P
  284. …Šñò …‘óR‰ˆ qˆ
  285. ‰ ˆôÍ!ˆ‰ˆÈõö ÷øùú%%)‰    ˆûüì    !!P‰ˆýþ !ˆÿ    @\"ˆA    B\"ˆCD    !e\"ˆŠE!qˆÈ‰ˆF ˆG )ˆHIJ$‰ˆKLMÈÈøNO
  286. P%$\"ˆŠqˆûüì    !!P‰ˆýþ !ˆÕ‰)ˆQ!‰,ˆRâ!‡" [cvs-program cvs-cvsroot this-dir directory update-buffer temp-name cvs-tempdir args nil cvs-update-running dont-change-disc local default-directory cvs-stdout-file process-connection-type cvs-shell mode-line-process cvs-buffer-name buffer-read-only cvs-cookie-handle cvs-startup-message t cvs-buffers-to-delete save-some-buffers file-exists-p error "%s: file not found (check setting of cvs-program)" getenv "CVSROOT" "Both cvs-cvsroot and environment variable CVSROOT unset." file-name-as-directory expand-file-name generate-new-buffer file-name-nondirectory 0 -1 "-update" make-temp-name "TMPDIR" "pcl-cvs." file-directory-p "%s is not a directory." "CVS" "%s does not contain CVS controlled files." process-status run stop "Can't run two `cvs update' simultaneously." " -d " " -n " " update " " -l " make-local-variable start-process "cvs" "-c" concat " " " > " ": " symbol-name set-buffer-modified-p buffer-modified-p set-process-sentinel cvs-sentinel set-process-filter cvs-update-filter set-marker process-mark get-buffer-create erase-buffer cvs-mode collection-create cvs-pp "---------- End -----" cookie-enter-first cvs-create-fileinfo MESSAGE "
  287.     Running `cvs " "' in " "...
  288. " cvs-delete-unused-temporary-buffers sit-for] 47))
  289.  
  290. (defun cvs-delete-unused-temporary-buffers (list) "\
  291. Delete all buffers on LIST that is not visible.
  292. Return a list of all buffers that still is alive." (byte-code "?ƒ    Á‚#Ã@!ƒ@ÄA!B‚#Å@!ˆÄA!‡" [list nil t get-buffer-window cvs-delete-unused-temporary-buffers kill-buffer] 5))
  293.  
  294. (put (quote cvs-mode) (quote mode-class) (quote special))
  295.  
  296. (defun cvs-mode nil "\
  297. \\<cvs-mode-map>Mode used for pcl-cvs, a frontend to CVS.
  298.  
  299. To get the *cvs* buffer you should use ``\\[cvs-update]''.
  300.  
  301. Full documentation is in the Texinfo file.  These are the most useful commands:
  302.  
  303. \\[cvs-mode-previous-line] Move up.                    \\[cvs-mode-next-line] Move down.
  304. \\[cvs-mode-commit]   Commit file.                \\[cvs-mode-update-no-prompt]   Reupdate directory.
  305. \\[cvs-mode-mark]   Mark file/dir.              \\[cvs-mode-unmark]   Unmark file/dir.
  306. \\[cvs-mode-mark-all-files]   Mark all files.             \\[cvs-mode-unmark-all-files]   Unmark all files.
  307. \\[cvs-mode-find-file]   Edit file/run Dired.        \\[cvs-mode-find-file-other-window]   Find file or run Dired in other window.
  308. \\[cvs-mode-remove-handled]   Remove processed entries.   \\[cvs-mode-add-change-log-entry-other-window]   Write ChangeLog in other window.
  309. \\[cvs-mode-add]   Add to repository.          \\[cvs-mode-remove-file]   Remove file.
  310. \\[cvs-mode-diff-cvs]   Diff between base revision. \\[cvs-mode-diff-backup]   Diff backup file.
  311. \\[cvs-mode-emerge]   Run emerge on base revision/backup file.
  312. \\[cvs-mode-acknowledge] Delete line from buffer.    \\[cvs-mode-ignore]   Add file to the .cvsignore file.
  313. \\[cvs-mode-log]   Run ``cvs log''.            \\[cvs-mode-status]   Run ``cvs status''.
  314. \\[cvs-mode-undo-local-changes]  Revert the last checked in version - discard your changes to the file.
  315.  
  316. Entry to this mode runs cvs-mode-hook.
  317. This description is updated for release 1.05 of pcl-cvs.
  318.  
  319. All bindings:
  320. \\{cvs-mode-map}" (interactive) (byte-code "ÈljˆÈ‰ˆÃ‰ˆÉp!ˆÊÄ!ˆ‰ˆË!ˆÌÍ!‡" [major-mode mode-name mode-line-process nil goal-column cvs-cursor-column cvs-mode-map cvs-mode "CVS" buffer-flush-undo make-local-variable use-local-map run-hooks cvs-mode-hook] 5))
  321.  
  322. (defun cvs-sentinel (proc msg) "\
  323. Sentinel for the cvs update process.
  324. This is responsible for parsing the output from the cvs update when
  325. it is finished." (byte-code "ËÌ!!?ƒÍÁ\"‚sÎ!Ï>…spd`ЎÌ!qˆÑÒÎ!!P‰ˆÓ!ÔÌ!\"ˆÌ!    BB‰    ˆÕ!*)ˆÖ
  326. Ì!\"ƒbÁ‚rÌ!qˆ W…o bˆ
  327. q+‡" [proc nil obuf omax opoint mode-line-process out-file cvs-stdout-file stdout-buffer cvs-buffers-to-delete cvs-update-running buffer-name process-buffer set-process-buffer process-status (signal exit) ((byte-code "Âà!ˆÁ‰‡" [cvs-update-running nil set-buffer-modified-p buffer-modified-p] 4)) ": " symbol-name find-file-noselect cvs-parse-update delete-file equal] 17))
  328.  
  329. (defun cvs-update-filter (proc string) "\
  330. Filter function for pcl-cvs.
  331. This function gets the output that CVS sends to stderr. It inserts it
  332. into (process-buffer proc) but it also checks if CVS is waiting for a
  333. lock file. If so, it inserts a message cookie in the *cvs* buffer." (byte-code "pÇ ȎÉ
  334. !qˆŠÊ
  335. !bˆ cˆËÊ
  336. !`\"ˆÌ Í\"…*Î Ì Í\"\"ˆÏÐ!ˆÑÒ!…VÓÔÕ!ÖÕ!\"‰ˆ× ØÙÆÆÚÛÓÔÍ!ÖÍ!\"ÜÝ%$\"))*‡" [old-buffer data proc string cvs-cookie-handle cvs-lock-file nil match-data ((byte-code "Â!ˆ    q‡" [data old-buffer store-match-data] 2)) process-buffer process-mark set-marker tin-nth 1 tin-delete beginning-of-line 0 looking-at "^cvs update: \\[..:..:..\\] waiting for \\(.*\\)lock in \\(.*\\)$" buffer-substring match-beginning 2 match-end cookie-enter-last cvs-create-fileinfo MESSAGE concat "    Waiting for " "lock in " ".
  337.      (type M-x cvs-delete-lock to delete it)"] 28))
  338.  
  339. (defun cvs-delete-lock nil "\
  340. Delete the lock file that CVS is waiting for.
  341. Note that this can be dangerous.  You should only do this
  342. if you are convinced that the process that created the lock is dead." (interactive) (byte-code "ˆÃÄ!ÅP!†ÆÇKÈ!\"?ƒÉÊ!‚LËÌÍQ!…LÆÇKÈ!\"    …CÎÄ!    @P!ˆ    A‰ˆ‚.ˆÏÄ!ÅP!)‡" [cvs-lock-file locks nil file-exists-p file-name-as-directory "#cvs.lock" cvs-filter cvs-lock-file-p directory-files error "No lock files found." yes-or-no-p "Really delete locks in " "? " delete-file cvs-remove-directory] 16))
  343.  
  344. (defun cvs-remove-directory (dir) "\
  345. Remove a directory." (byte-code "Ã!ƒÄ    ÂÂÂ%‚ÅÆ\"ˆÇ!…ÅÈ\"‡" [dir cvs-rmdir-program nil file-directory-p call-process error "Not a directory: %s" file-exists-p "Could not remove directory %s"] 7))
  346.  
  347. (defun cvs-lock-file-p (file) "\
  348. Return true if FILE looks like a CVS lock file." (byte-code "ÁÂ\"†ÁÃ\"†ÁÄ\"‡" [file string-match "^#cvs.tfl.[0-9]+$" "^#cvs.rfl.[0-9]+$" "^#cvs.wfl.[0-9]+$"] 5))
  349.  
  350. (defun cvs-skip-line (stdout stderr regexp &optional arg) "\
  351. Like forward-line, but check that the skipped line matches REGEXP.
  352. Args: STDOUT STDERR REGEXP &optional ARG.
  353.  
  354. If it doesn't match REGEXP a bug report is generated and displayed.
  355. STDOUT and STDERR is only used to do that.
  356.  
  357. If optional ARG, a number, is given the ARGth parenthesized expression
  358. in the REGEXP is returned as a string.
  359. Point should be in column 1 when this function is called." (byte-code "Å!ƒÆÇ!ˆ    …ÈÉ    !Ê    !\"‚)Ë p =ƒ&̂'Í`$‡" [regexp arg t stdout stderr looking-at forward-line 1 buffer-substring match-beginning match-end cvs-parse-error STDOUT STDERR] 10))
  360.  
  361. (defun cvs-get-current-dir (root-dir dirname) "\
  362. Return current working directory, suitable for cvs-parse-update.
  363. Args: ROOT-DIR DIRNAME.
  364. Concatenates ROOT-DIR and DIRNAME to form an absolute path." (byte-code "ÂÃ\"ƒ    ÄÅO‚    P‡" [dirname root-dir string= "." 0 -1] 4))
  365.  
  366. (defun cvs-compare-fileinfos (a b) "\
  367. Compare fileinfo A with fileinfo B and return t if A is `less'." (byte-code "ÄÅ!Å    !\"ƒ‚QÆÅ!Å    !\"?ƒÂQÇ!È=…-Ç    !È=?ƒ4‚QÇ    !È=…BÇ!È=?ƒIÂQÄÉ!É    !\"‡" [a b t nil string< cvs-fileinfo->dir string= cvs-fileinfo->type DIRCHANGE cvs-fileinfo->file-name] 15))
  368.  
  369. (defun cvs-parse-error (stdout-buffer stderr-buffer err-buf pos) "\
  370. Handle a parse error when parsing the output from cvs.
  371. Args: STDOUT-BUFFER STDERR-BUFFER ERR-BUF POS.
  372. ERR-BUF should be 'STDOUT or 'STDERR." (byte-code "S‰ˆ    qˆÃ‰ˆÍ ˆÎcˆÏÐ Ñ#ˆÒcˆÓcˆÔcˆÕcˆÖcˆ×cˆØcˆÙcˆÚcˆÛcˆÜcˆÝcˆÞcˆßcˆŠqˆà )Šqˆà )
  373. á=ƒ`‚b    âÜ    #      O ãä Z\"cˆ cˆåcˆÏæç
  374. !èãé\"$ˆÏêë Ü#ˆÏìíîïð%ˆÜcˆãñG\"cˆcˆòcˆãóG\"cˆcˆôcˆõcˆö÷!ˆø ˆùú!-‡" [pos cvs-buffer-name buffer-read-only nil pcl-cvs-version stdout stdout-buffer stderr stderr-buffer errstr err-buf errline-end errline erase-buffer "To: ceder@lysator.liu.se
  375. " insert "Subject: pcl-cvs " " parse error.
  376. " "--text follows this line--
  377.  
  378. " "This bug report is automatically generated by pcl-cvs
  379. " "because it doesn't understand some output from CVS.  Below
  380. " "is detailed information about the error.  Please send
  381. " "this, together with any information you think might be
  382. " "useful for me to fix the bug, to the address above.  But
  383. " "please check the \"known problems\" section of the
  384. " "documentation first.  Note that this buffer contains
  385. " "information that you might consider confidential.  You
  386. " "are encouraged to read through it before sending it.
  387. " "
  388. " "Press C-c C-c to send this email.
  389.  
  390. " "Please state the version of these programs you are using:
  391. " "RCS:  
  392. diff: 
  393.  
  394. " buffer-string STDOUT string-match format "Offending line (%d chars): >" "<
  395. " "Sent to " symbol-name " at pos " "%d
  396. " "Emacs-version: " emacs-version "Pcl-cvs $" "Id:" "$" ": " "Id: pcl-cvs.el,v 1.93 1993/05/31 22:44:00 ceder Exp 
  397. " "--- Contents of stdout buffer (%d chars) ---
  398. " "--- End of stdout buffer ---
  399. " "--- Contents of stderr buffer (%d chars) ---
  400. " "--- End of stderr buffer ---
  401. " "End of bug report.
  402. " require sendmail mail-mode error "CVS parse error - please report this bug."] 18))
  403.  
  404. (defun cvs-parse-update (stdout-buffer stderr-buffer) "\
  405. Parse the output from `cvs update'.
  406.  
  407. Args: STDOUT-BUFFER STDERR-BUFFER.
  408.  
  409. This functions parses the from `cvs update' (which should be
  410. separated in its stdout- and stderr-components) and prints a
  411. pretty representation of it in the *cvs* buffer.
  412.  
  413. Signals an error if unexpected output was detected in the buffer." (byte-code "ÉÁBÊ $Ë
  414. $ˆÌAÍK\"‰ˆÎ!ˆÏ\"ˆÐ ˆÑ ˆqˆÒ ˆebˆÓeÔ#ˆ‰+‡" [head nil tail stdout-buffer stderr-buffer default-directory root-dir cvs-cookie-handle cvs-buffer-name dummy cvs-parse-stderr cvs-parse-stdout sort cvs-compare-fileinfos collection-clear collection-append-cookies cvs-remove-stdout-shadows cvs-remove-empty-directories cvs-mode tin-goto-previous 1] 13))
  415.  
  416. (defun cvs-remove-stdout-shadows nil "\
  417. Remove entries in the *cvs* buffer that comes from both stdout and stderr.
  418. If there is two entries for a single file the second one should be
  419. deleted. (Remember that sort uses a stable sort algorithm, so one can
  420. be sure that the stderr entry is always first)." (byte-code "ÁÂ\"‡" [cvs-cookie-handle collection-filter-tins (lambda (tin) (byte-code "Á!?‡" [tin cvs-shadow-entry-p] 2))] 3))
  421.  
  422. (defun cvs-shadow-entry-p (tin) "\
  423. Return non-nil if TIN is a shadow entry.
  424. Args: TIN.
  425. A TIN is a shadow entry if the previous tin contains the same file." (byte-code "Å    
  426. \"Æ    
  427. \"…Æ    \" …^ …^ÇÈ !È !\"…^ÇÉ !É !\"…^Ê !Ë=…>Ê !Ë=†^Ê !Ì=…NÊ !Í=†^Ê !Î=…^Ê !Ï=+‡" [previous-tin cvs-cookie-handle tin curr prev tin-previous tin-cookie string= cvs-fileinfo->file-name cvs-fileinfo->dir cvs-fileinfo->type CONFLICT MERGED MODIFIED REM-EXIST REMOVED] 17))
  428.  
  429. (defun cvs-parse-stderr (stdout-buffer stderr-buffer head dir) "\
  430. Parse the output from CVS that is written to stderr.
  431. Args: STDOUT-BUFFER STDERR-BUFFER HEAD DIR
  432. STDOUT-BUFFER holds the output that cvs sent to stdout. It is only
  433. used to create a bug report in case there is a parse error.
  434. STDERR-BUFFER is the buffer that holds the output to parse.
  435. HEAD is a cons-cell, the head of the list that is built.
  436. DIR is the directory the `cvs update' was run in.
  437.  
  438. This function returns the last cons-cell in the list that is built." (byte-code "͋ˆ ‡" [stderr-buffer current-dir dir root-dir head nil start stdout-buffer t complex-start initial-revision filename fileinfo ((byte-code "qˆebˆ
  439.  
  440. `dW…‘ÍÎ!ƒÏÐ!‚ÍÑ!ƒAÏÐ!ˆ`dW…0ÍÒ!?…:ÏÐ!ˆ‚&ˆÏÓ!‚ÍÔ!ƒfÏÐ!ˆ`dW…UÍÒ!?…_ÏÐ!ˆ‚KˆÏÓ!‚ÍÕ!ƒqdb‚ÍÖ!ƒ¢× ØÙÐ!ÚÐ!\"\"‰ˆÛ ÜÝ    ÅØÙÞ!ÚÞ!\"$C\"ˆ A‰ˆÏÐ!‚Íß!†«Íà!ƒÔÛ Üá    âØÙÐ!ÚÐ!\"!ØÙÞ!ÚÞ!\"$C\"ˆ A‰ˆÏÐ!‚Íã!ƒàÏÐ!‚Íä!ƒ Û Üå    âØÙÐ!ÚÐ!\"!ØÙÞ!ÚÞ!\"$C\"ˆ A‰ˆÏÐ!‚Íæ!ƒÏÐ!‚Íç!ƒ$ÏÐ!‚Íè!ƒPÛ Üé    âØÙÐ!ÚÐ!\"!ØÙÞ!ÚÞ!\"$C\"ˆ A‰ˆÏÐ!‚Íê!ƒzÛ Üë    ØÙÐ!ÚÐ!\"ØÙÞ!ÚÞ!\"$C\"ˆ A‰ˆÏÐ!‚Íì!ƒ¤Û Üí    ØÙÐ!ÚÐ!\"ØÙÞ!ÚÞ!\"$C\"ˆ A‰ˆÏÐ!‚Íî!ƒÑ`ÏÐ!ˆïðñ!#ˆÛ Üò    ÅØ`\"$C\"ˆ A‰)‚`ÅÅ 
  441.     ïó#ˆïôÐ$‰
  442. ˆïõ#ˆïöÐ$‰ ˆÍ÷!ƒ5ï÷#ˆïø#ˆÜù     Ø    `\"$ ú 
  443. \"ˆÛ  C\"ˆ A‰)‚ŒÍû!ƒlïü#ˆïý#ˆïþ#ˆÜù     Ø    `\"$ Û  C\"ˆ A‰)‚ŒÜÿ     Ø    `\"$ ú 
  444. \"ˆÛ  C\"ˆ A‰)+ˆ‚
  445. *‡" [stderr-buffer current-dir dir root-dir head nil start stdout-buffer t complex-start initial-revision filename fileinfo looking-at "updating of .* finished$" forward-line 1 "REMOTE FOLDER:.*" "phase 2.*" 2 "turn on remote mode$" "phase 3.*" "cvs update: Updating \\(.*\\)$" cvs-get-current-dir buffer-substring match-beginning match-end setcdr cvs-create-fileinfo DIRCHANGE 0 "cvs update: warning: \\(.*\\) is not (any longer) pertinent" "cvs update: \\(.*\\) is no longer in the repository" CVS-REMOVED file-name-nondirectory "cvs update: warning: .* was lost$" "^cvs update: move away \\(.*\\); it is in the way$" MOVE-AWAY "^$" "^cvs update: \\[..:..:..\\] waiting for .*lock in " "cvs update: conflict: \\(.*\\) is modified but no longer in the repository$" REM-CONFLICT "cvs update: conflict: removed \\(.*\\) was modified by second party" MOD-CONFLICT "cvs update: \\(.*\\) should be removed and is still there" REM-EXIST "cvs update: in directory " cvs-skip-line regexp-quote "cvs [update aborted]: there is no repository " REPOS-MISSING "^RCS file: .*$" "^retrieving revision \\(.*\\)$" "^retrieving revision .*$" "^Merging differences between [0-9.]+ and [0-9.]+ into \\(.*\\)$" "^\\(rcs\\)?merge\\( warning\\)?: overlaps during merge$" "^cvs update: conflicts found in " CONFLICT cvs-set-fileinfo->base-revision "^\\(rcs\\)?merge\\( warning\\)?: overlaps or other problems during merge$" "^\\(rcs\\)?merge\\( warning\\)?: overlaps .*during merge$" "^cvs update: could not merge " "^cvs update: restoring .* from backup file " MERGED] 117))] 1))
  446.  
  447. (defun cvs-parse-stdout (stdout-buffer stderr-buffer head root-dir) "\
  448. Parse the output from CVS that is written to stderr.
  449. Args: STDOUT-BUFFER STDERR-BUFFER HEAD ROOT-DIR
  450. STDOUT-BUFFER is the buffer that holds the output to parse.
  451. STDERR-BUFFER holds the output that cvs sent to stderr. It is only
  452. used to create a bug report in case there is a parse error.
  453.  
  454. HEAD is a cons-cell, the head of the list that is built.
  455. ROOT-DIR is the directory the `cvs update' was run in.
  456.  
  457. This function doesn't return anything particular." (byte-code "ɋ‡" [stdout-buffer c full-path root-dir fileinfo t head cvs-update-prog-output-skip-regexp stderr-buffer ((byte-code "qˆebˆ`dW…­ÉÊ!ƒ‘ËÌ!fÍ !ÎËÏ!ÐÏ!\"PÑ    Ò=ƒ/ӂ^    Ô=ƒ9Ղ^    Ö=ƒCׂ^    Ø=ƒMق^    Ú=ƒWۂ^    Ü=…^ÝÞ
  458. !ßàOá
  459. !ÎËß!Ðß!\"$    Ú=…{â Å\"ˆã C\"ˆA‰ˆäÌ!+‚©Éå!ƒ¢æ!ˆäÌ!‚©çè`$ˆ‚‡" [stdout-buffer c full-path root-dir fileinfo t head cvs-update-prog-output-skip-regexp stderr-buffer looking-at "\\([MARCU?]\\) \\(.*\\)$" match-beginning 1 file-name-as-directory buffer-substring 2 match-end cvs-create-fileinfo 77 MODIFIED 65 ADDED 82 REMOVED 67 CONFLICT 85 UPDATED 63 UNKNOWN file-name-directory 0 -1 file-name-nondirectory cvs-set-fileinfo->handled setcdr forward-line "cvs update: Executing" re-search-forward cvs-parse-error STDOUT] 24))] 1))
  460.  
  461. (defun cvs-pp (fileinfo) "\
  462. Pretty print FILEINFO.  Insert a printed representation in current buffer.
  463. For use by the cookie package." (byte-code "Æ    !Ç    !ƒÈ‚ÉÊ    !Ë    !ƒÌ‚ÍÎ=ƒ.ÏÐ
  464. #‚øÑ=ƒ=ÏÒ
  465. $‚øÓ=ƒLÏÔ
  466. $‚øÕ=ƒZÏÖ
  467. #‚ø×=ƒiÏØ
  468. $‚øÙ=ƒxÏÚ
  469. $‚øÛ=ƒ†ÏÜ
  470. #‚øÝ=ƒ”ÏÞ
  471. #‚øß=ƒ¢Ïà
  472. #‚øá=ƒ°Ïâ
  473. #‚øã=ƒ¾Ïä
  474. #‚øå=ƒÍÏæç    !\"‚øè=ƒÛÏé
  475. #‚øê=ƒçÏë!‚øì=ƒóí    !‚øÏî
  476. #c,‡" [a fileinfo s f ci t cvs-fileinfo->type cvs-fileinfo->marked "*" " " cvs-fileinfo->file-name cvs-fileinfo->handled "  " "ci" UPDATED format "%s Updated     %s" MODIFIED "%s Modified %s %s" MERGED "%s Merged   %s %s" CONFLICT "%s Conflict    %s" ADDED "%s Added    %s %s" REMOVED "%s Removed  %s %s" UNKNOWN "%s Unknown     %s" CVS-REMOVED "%s Removed from repository:  %s" REM-CONFLICT "%s Conflict: Removed from repository, changed by you: %s" MOD-CONFLICT "%s Conflict: Removed by you, changed in repository: %s" REM-EXIST "%s Conflict: Removed by you, but still exists: %s" DIRCHANGE "
  477. In directory %s:" cvs-fileinfo->dir MOVE-AWAY "%s Move away %s - it is in the way" REPOS-MISSING "  This repository is missing! Remove this dir manually." MESSAGE cvs-fileinfo->full-log "%s Internal error! %s"] 24))
  478.  
  479. (if cvs-mode-map nil (setq cvs-mode-map (make-keymap)) (suppress-keymap cvs-mode-map) (define-key cvs-mode-map " " (quote cvs-mode-next-line)) (define-key cvs-mode-map "?" (quote describe-mode)) (define-key cvs-mode-map "A" (quote cvs-mode-add-change-log-entry-other-window)) (define-key cvs-mode-map "M" (quote cvs-mode-mark-all-files)) (define-key cvs-mode-map "R" (quote cvs-mode-revert-updated-buffers)) (define-key cvs-mode-map "U" (quote cvs-mode-undo-local-changes)) (define-key cvs-mode-map "" (quote cvs-mode-unmark-up)) (define-key cvs-mode-map " " (quote cvs-mode-acknowledge)) (define-key cvs-mode-map "" (quote cvs-mode-next-line)) (define-key cvs-mode-map "" (quote cvs-mode-previous-line)) (define-key cvs-mode-map "ÿ" (quote cvs-mode-unmark-all-files)) (define-key cvs-mode-map "a" (quote cvs-mode-add)) (define-key cvs-mode-map "b" (quote cvs-mode-diff-backup)) (define-key cvs-mode-map "c" (quote cvs-mode-commit)) (define-key cvs-mode-map "d" (quote cvs-mode-diff-cvs)) (define-key cvs-mode-map "e" (quote cvs-mode-emerge)) (define-key cvs-mode-map "f" (quote cvs-mode-find-file)) (define-key cvs-mode-map "g" (quote cvs-mode-update-no-prompt)) (define-key cvs-mode-map "i" (quote cvs-mode-ignore)) (define-key cvs-mode-map "l" (quote cvs-mode-log)) (define-key cvs-mode-map "m" (quote cvs-mode-mark)) (define-key cvs-mode-map "n" (quote cvs-mode-next-line)) (define-key cvs-mode-map "o" (quote cvs-mode-find-file-other-window)) (define-key cvs-mode-map "p" (quote cvs-mode-previous-line)) (define-key cvs-mode-map "q" (quote bury-buffer)) (define-key cvs-mode-map "r" (quote cvs-mode-remove-file)) (define-key cvs-mode-map "s" (quote cvs-mode-status)) (define-key cvs-mode-map "x" (quote cvs-mode-remove-handled)) (define-key cvs-mode-map "u" (quote cvs-mode-unmark)))
  480.  
  481. (defun cvs-get-marked (&optional ignore-marks) "\
  482. Return a list of all selected tins.
  483. If there are any marked tins, and IGNORE-MARKS is nil, return them.
  484. Otherwise, if the cursor selects a directory, return all files in it.
  485. Otherwise return (a list containing) the file the cursor points to, or
  486. an empty list if it doesn't point to a file at all.
  487.  
  488. Args: &optional IGNORE-MARKS." (byte-code "?…    Ä    Å\"†0Æ    `\" …ÇÈ     \"!É=ƒ-Ä    ÊËÈ     \"!#‚/ C)‡" [ignore-marks cvs-cookie-handle t sel collection-collect-tin cvs-fileinfo->marked tin-locate cvs-fileinfo->type tin-cookie DIRCHANGE cvs-dir-member-p cvs-fileinfo->dir] 11))
  489.  
  490. (defun cvs-dir-member-p (fileinfo dir) "\
  491. Return true if FILEINFO represents a file in directory DIR." (byte-code "Â!Ã=?…ÄÅ!    \"‡" [fileinfo dir cvs-fileinfo->type DIRCHANGE string= cvs-fileinfo->dir] 5))
  492.  
  493. (defun cvs-dir-empty-p (tin) "\
  494. Return non-nil if TIN is a directory that is empty.
  495. Args: CVS-BUF TIN." (byte-code "Âà   \"!Ä=…Å    \"?†ÂÃÅ    \"\"!Ä=‡" [cvs-cookie-handle tin cvs-fileinfo->type tin-cookie DIRCHANGE tin-next] 9))
  496.  
  497. (defun cvs-mode-revert-updated-buffers nil "\
  498. Revert any buffers that are UPDATED, MERGED or CONFLICT." (interactive) (byte-code "ÁˆÂÃK\"‡" [cvs-cookie-handle nil cookie-map cvs-revert-fileinfo] 4))
  499.  
  500. (defun cvs-revert-fileinfo (fileinfo) "\
  501. Revert the buffer that holds the file in FILEINFO if it has changed,
  502. and if the type is UPDATED, MERGED or CONFLICT." (byte-code "Å    !Æ    !Ç
  503. !È=†É=†Ê=… …8Š qˆË ƒ3ÌÍΠ\"‚7ÏÐÑ\")+‡" [type fileinfo file buffer t cvs-fileinfo->type cvs-fileinfo->full-path get-file-buffer UPDATED MERGED CONFLICT buffer-modified-p error "%s: edited since last cvs-update." buffer-file-name revert-buffer dont-use-auto-save-file dont-ask] 9))
  504.  
  505. (defun cvs-mode-remove-handled nil "\
  506. Remove all lines that are handled.
  507. Empty directories are removed." (interactive) (byte-code "ÁˆÂÃ\"ˆÄ ‡" [cvs-cookie-handle nil collection-filter-cookies (lambda (fileinfo) (byte-code "Á!?‡" [fileinfo cvs-fileinfo->handled] 2)) cvs-remove-empty-directories] 3))
  508.  
  509. (defun cvs-remove-empty-directories nil "\
  510. Remove empty directories in the *cvs* buffer." (byte-code "ÁÂ\"‡" [cvs-cookie-handle collection-filter-tins (lambda (tin) (byte-code "Á!?‡" [tin cvs-dir-empty-p] 2))] 3))
  511.  
  512. (defun cvs-mode-mark (pos) "\
  513. Mark a fileinfo. Args: POS.
  514. If the fileinfo is a directory, all the contents of that directory are
  515. marked instead. A directory can never be marked.
  516. POS is a buffer position." (interactive "d") (byte-code "ňƠ   
  517. \"Ç    \"È !É=ƒÊË    Ì !#‚-Í Ä\"ˆÎ    \"ˆÏ    
  518. Ð#*‡" [tin cvs-cookie-handle pos sel t nil tin-locate tin-cookie cvs-fileinfo->type DIRCHANGE cookie-map (lambda (f dir) (byte-code "à   \"…ÄÂ\"ˆÂ‡" [f dir t cvs-dir-member-p cvs-set-fileinfo->marked] 4)) cvs-fileinfo->dir cvs-set-fileinfo->marked tin-invalidate tin-goto-next 1] 11))
  519.  
  520. (defun cvs-committable (tin) "\
  521. Check if the TIN is committable.
  522. It is committable if it
  523.    a) is not handled and
  524.    b) is either MODIFIED, ADDED, REMOVED, MERGED or CONFLICT." (byte-code "Ä    
  525. \"Å!Æ!?…+ Ç=†+ È=†+ É=†+ Ê=†+ Ë=*‡" [fileinfo cvs-cookie-handle tin type tin-cookie cvs-fileinfo->type cvs-fileinfo->handled MODIFIED ADDED REMOVED MERGED CONFLICT] 5))
  526.  
  527. (defun cvs-mode-commit nil "\
  528. Check in all marked files, or the current file.
  529. The user will be asked for a log message in a buffer.
  530. If cvs-erase-input-buffer is non-nil that buffer will be erased.
  531. Otherwise mark and point will be set around the entire contents of the
  532. buffer so that it is easy to kill the contents of the buffer with \\[kill-region]." (interactive) (byte-code "ňpÆÇKÈ \"    ?ƒÉÊ!‚:ËÌ
  533. !!ˆebˆ ƒ(Í ‚+Îd!ˆÏ ˆÐÄ!ˆ    ‰ˆÑÒ!*‡" [cvs-buf marked cvs-commit-prompt-buffer cvs-erase-input-buffer cvs-commit-list nil cvs-filter cvs-committable cvs-get-marked error "Nothing to commit!" pop-to-buffer get-buffer-create erase-buffer push-mark cvs-edit-mode make-local-variable message "Press C-c C-c when you are done editing."] 12))
  534.  
  535. (defun cvs-edit-done nil "\
  536. Commit the files to the repository." (interactive) (byte-code "͈?…
  537. ÏÐ!ˆdÑV…+ÒdSfÓ\"…+    Â=†+    …+ÔÕÖ× \"!…5ŠdbˆÓc)ˆØ ˆÙ!pÚÛÜ!PÝed#ˆÞ !ˆß!ˆà ˆáâ!ˆã     ƒuäå    æç%‚zæçE#…ƒÏè
  538. \"ˆ   … éê  @\"!ˆ A‰ ˆ‚‡)ˆëì #ˆqˆÍ‰ˆ qˆ…»í ,ˆáî!‡" [cvs-commit-list cvs-commit-buffer-require-final-newline t cc-list cc-buffer cvs-buffer-name msg-buffer msg-file-name cvs-program cvs-cvsroot cvs-temp-buffer-name ccl cvs-cookie-handle nil cvs-auto-remove-handled error "You have already commited the files" 1 /= 10 yes-or-no-p format "Buffer %s does not end in newline.  Add one? " buffer-name save-some-buffers get-buffer "T:" make-temp-name "pcl-cvs" write-region pop-to-buffer bury-buffer cvs-use-temp-buffer message "Committing..." cvs-execute-list list "-d" "commit" "-f" "Something went wrong. Check the %s buffer carefully." cvs-after-commit-function tin-cookie apply tin-invalidate cvs-mode-remove-handled "Committing... Done."] 22))
  539.  
  540. (defun cvs-after-commit-function (fileinfo) "\
  541. Do everything that needs to be done when FILEINFO has been commited.
  542. The fileinfo->handle is set, and if the buffer is present it is reverted." (byte-code "ÅÁ\"ˆ
  543. …%Æ!Ç ! …$Š qˆÈ ?…#ÉÊË\")*‡" [fileinfo t cvs-auto-revert-after-commit file buffer cvs-set-fileinfo->handled cvs-fileinfo->full-path get-file-buffer buffer-modified-p revert-buffer dont-use-auto-save-file dont-ask] 7))
  544.  
  545. (defun cvs-execute-list (tin-list program constant-args) "\
  546. Run PROGRAM on all elements on TIN-LIST.
  547. Args: TIN-LIST PROGRAM CONSTANT-ARGS
  548. The PROGRAM will be called with pwd set to the directory the
  549. files reside in. CONSTANT-ARGS should be a list of strings. The
  550. arguments given to the program will be CONSTANT-ARGS followed by all
  551. the files (from TIN-LIST) that resides in that directory. If the files
  552. in TIN-LIST resides in different directories the PROGRAM will be run
  553. once for each directory (if all files in the same directory appears
  554. after each other).
  555.  
  556. Any output from PROGRAM will be inserted in the current buffer.
  557.  
  558. This function return nil if all went well, or the numerical exit
  559. status or a signal name as a string. Note that PROGRAM might be called
  560. several times. This will return non-nil if something goes wrong, but
  561. there is no way to know which process that failed." (byte-code "Á
  562. …žÌÍ
  563. @\"!ÁÁ
  564. …!Î ÌÍ
  565. @\"!\"…8ÏÍ
  566. @\"!B‰ˆ
  567. A‰ˆ‚ˆÐ!‰ˆÑ !‰ˆÒÓ\"cˆÒÔÕÖר    !\"Ù##cˆÚÛÁËËר    !\"&
  568. Ü
  569. !…|Ý
  570. !?…Ž?†ŽÜ!…ŽÞU…•
  571. ‰)ˆdb+ˆ‚ˆ)‡" [exitstatus nil tin-list current-dir cvs-cookie-handle arg-list arg-str default-directory program constant-args res t cvs-fileinfo->dir tin-cookie string= cvs-fileinfo->file-name nreverse file-name-as-directory format "=== cd %s
  572. " "=== %s %s
  573.  
  574. " mapconcat (lambda (foo) foo) nconc copy-sequence " " apply call-process integerp zerop 1] 25))
  575.  
  576. (defun cvs-execute-single-file-list (tin-list extractor program constant-args) "\
  577. Run PROGRAM on all elements on TIN-LIST.
  578.  
  579. Args: TIN-LIST EXTRACTOR PROGRAM CONSTANT-ARGS
  580.  
  581. The PROGRAM will be called with pwd set to the directory the files
  582. reside in.  CONSTANT-ARGS is a list of strings to pass as arguments to
  583. PROGRAM.  The arguments given to the program will be CONSTANT-ARGS
  584. followed by the list that EXTRACTOR returns.
  585.  
  586. EXTRACTOR will be called once for each file on TIN-LIST.  It is given
  587. one argument, the cvs-fileinfo.  It can return t, which means ignore
  588. this file, or a list of arguments to send to the program." (byte-code "…VÉÊË
  589. @\"!!Ì Ë
  590. @\"\" Å=ƒ!ƂLÍΠ   \"cˆÍÏÐÑÒÓ! \"Ô##cˆÕÖÆÅÅÒÓ! \"&ˆdb*ˆA‰ˆ‚‡" [tin-list default-directory cvs-cookie-handle arg-list extractor t nil program constant-args file-name-as-directory cvs-fileinfo->dir tin-cookie funcall format "=== cd %s
  591. " "=== %s %s
  592.  
  593. " mapconcat (lambda (foo) foo) nconc copy-sequence " " apply call-process] 21))
  594.  
  595. (defun cvs-edit-mode nil "\
  596. \\<cvs-edit-mode-map>Mode for editing cvs log messages.
  597. Commands:
  598. \\[cvs-edit-done] checks in the file when you are ready.
  599. This mode is based on fundamental mode." (interactive) (byte-code "ÈÄ!ˆÅ‰ˆÆ‰ˆÇÈ!‡" [cvs-edit-mode-map major-mode mode-name nil use-local-map cvs-edit-mode "CVS Log" auto-fill-mode 1] 3))
  600.  
  601. (if cvs-edit-mode-map nil (setq cvs-edit-mode-map (make-sparse-keymap)) (define-prefix-command (quote cvs-control-c-prefix)) (define-key cvs-edit-mode-map "" (quote cvs-control-c-prefix)) (define-key cvs-edit-mode-map "" (quote cvs-edit-done)))
  602.  
  603. (defun cvs-diffable (tins) "\
  604. Return a list of all tins on TINS that it makes sense to run
  605. ``cvs diff'' on." (byte-code "Á
  606. …BÅÆ
  607. @\"! Ç=†/ È=†/ É=†/ Ê=†/ Ë=†/ Ì=…8
  608. @B‰ˆ
  609. A‰)ˆ‚ˆÍ!)‡" [result nil tins type cvs-cookie-handle cvs-fileinfo->type tin-cookie MODIFIED UPDATED MERGED CONFLICT REMOVED ADDED nreverse] 5))
  610.  
  611. (defun cvs-mode-diff-cvs (&optional ignore-marks) "\
  612. Diff the selected files against the repository.
  613. The flags in the variable cvs-diff-flags (which should be a list
  614. of strings) will be passed to ``cvs diff''.  If the variable
  615. cvs-diff-ignore-marks is non-nil any marked files will not be
  616. considered to be selected.  An optional prefix argument will invert
  617. the influence from cvs-diff-ignore-marks." (interactive "P") (byte-code "ƈ<?… ÇÈ!ˆÉ ˆÊË
  618. … ?† 
  619. ?…  !!Ì ˆÍÎ!ˆÏ     ƒ;ÐÑBBB‚>ÑB#ƒHÍÒ!‚KÍÓ!)‡" [cvs-diff-flags marked ignore-marks cvs-diff-ignore-marks cvs-program cvs-cvsroot nil error "cvs-diff-flags should be a list of strings" save-some-buffers cvs-diffable cvs-get-marked cvs-use-temp-buffer message "cvsdiffing..." cvs-execute-list "-d" "diff" "cvsdiffing... Done." "cvsdiffing... No differences found."] 13))
  620.  
  621. (defun cvs-backup-diffable (tin) "\
  622. Check if the TIN is backup-diffable.
  623. It must have a backup file to be diffable." (byte-code "ÂÃÄ    \"!!‡" [cvs-cookie-handle tin file-readable-p cvs-fileinfo->backup-file tin-cookie] 5))
  624.  
  625. (defun cvs-mode-diff-backup (&optional ignore-marks) "\
  626. Diff the files against the backup file.
  627. This command can be used on files that are marked with \"Merged\"
  628. or \"Conflict\" in the *cvs* buffer.
  629.  
  630. If the variable cvs-diff-ignore-marks is non-nil any marked files will
  631. not be considered to be selected.  An optional prefix argument will
  632. invert the influence from cvs-diff-ignore-marks.
  633.  
  634. The flags in cvs-diff-flags will be passed to ``diff''." (interactive "P") (byte-code "ň<?… ÆÇ!ˆÈ ˆÉÊKË
  635. … ?†\"
  636. ?…\" !\"    ?…-ÆÌ!ˆÍ ˆÎÏ!ˆÐ    Ñ $)ˆÎÒ!‡" [cvs-diff-flags marked ignore-marks cvs-diff-ignore-marks cvs-diff-program nil error "cvs-diff-flags should be a list of strings." save-some-buffers cvs-filter cvs-backup-diffable cvs-get-marked "No ``Conflict'' or ``Merged'' file selected!" cvs-use-temp-buffer message "diffing..." cvs-execute-single-file-list cvs-diff-backup-extractor "diffing... Done."] 13))
  637.  
  638. (defun cvs-diff-backup-extractor (fileinfo) "\
  639. Return the filename and the name of the backup file as a list.
  640. Signal an error if there is no backup file." (byte-code "ÁÂ!!?…ÃÄÅÆ!!Ç!P\"ˆÂ!Ç!D‡" [fileinfo file-readable-p cvs-fileinfo->backup-file error "%s has no backup file." file-name-as-directory cvs-fileinfo->dir cvs-fileinfo->file-name] 10))
  641.  
  642. (defun cvs-mode-find-file-other-window (pos) "\
  643. Select a buffer containing the file in another window.
  644. Args: POS" (interactive "d") (byte-code "Ȉɠ   
  645. \"ƒTÊË    \"! Ì=† Í=ƒ$ÎÏ!‚P Ð=ƒKpÑÒË    \"!!‰ˆÓ!ˆ qˆ‰*‚PÔÕ!!)‚WÎÖ!)‡" [tin cvs-cookie-handle pos type obuf odir default-directory t nil tin-locate cvs-fileinfo->type tin-cookie REMOVED CVS-REMOVED error "Can't visit a removed file." DIRCHANGE file-name-as-directory cvs-fileinfo->dir dired-other-window find-file-other-window cvs-full-path "There is no file to find."] 12))
  646.  
  647. (defun cvs-fileinfo->full-path (fileinfo) "\
  648. Return the full path for the file that is described in FILEINFO." (byte-code "ÁÂ!!Ã!P‡" [fileinfo file-name-as-directory cvs-fileinfo->dir cvs-fileinfo->file-name] 5))
  649.  
  650. (defun cvs-full-path (tin) "\
  651. Return the full path for the file that is described in TIN." (byte-code "Âà   \"!‡" [cvs-cookie-handle tin cvs-fileinfo->full-path tin-cookie] 4))
  652.  
  653. (defun cvs-mode-find-file (pos) "\
  654. Select a buffer containing the file in another window.
  655. Args: POS" (interactive "d") (byte-code "ɈpÊ
  656. \"    ƒUË
  657.     \"Ì !Í=†Î=ƒ(ÏÐ!‚QÑ=ƒLÒÓ !!‰ˆÔ!ˆqˆ‰)‚QÕÖ    !!*‚XÏ×!*‡" [cvs-buf tin cvs-cookie-handle pos fileinfo type odir default-directory t nil tin-locate tin-cookie cvs-fileinfo->type REMOVED CVS-REMOVED error "Can't visit a removed file." DIRCHANGE file-name-as-directory cvs-fileinfo->dir dired find-file cvs-full-path "There is no file to find."] 11))
  658.  
  659. (defun cvs-mode-mark-all-files nil "\
  660. Mark all files.
  661. Directories are not marked." (interactive) (byte-code "ÁˆÂÃ\"‡" [cvs-cookie-handle nil cookie-map (lambda (cookie) (byte-code "Â!Ã=?…ÄÁ\"ˆÁ‡" [cookie t cvs-fileinfo->type DIRCHANGE cvs-set-fileinfo->marked] 4))] 3))
  662.  
  663. (defun cvs-mode-unmark (pos) "\
  664. Unmark a fileinfo. Args: POS." (interactive "d") (byte-code "ňƠ   
  665. \"Ç    \"È !É=ƒÊË    Ì !#‚-Í Å\"ˆÎ    \"ˆÏ    
  666. Ð#*‡" [tin cvs-cookie-handle pos sel t nil tin-locate tin-cookie cvs-fileinfo->type DIRCHANGE cookie-map (lambda (f dir) (byte-code "Ä    \"…ÅÂ\"ˆÃ‡" [f dir nil t cvs-dir-member-p cvs-set-fileinfo->marked] 4)) cvs-fileinfo->dir cvs-set-fileinfo->marked tin-invalidate tin-goto-next 1] 11))
  667.  
  668. (defun cvs-mode-unmark-all-files nil "\
  669. Unmark all files.
  670. Directories are also unmarked, but that doesn't matter, since
  671. they should always be unmarked." (interactive) (byte-code "ÁˆÂÃ\"‡" [cvs-cookie-handle nil cookie-map (lambda (cookie) (byte-code "ÃÁ\"ˆÂ‡" [cookie nil t cvs-set-fileinfo->marked] 3))] 3))
  672.  
  673. (defun cvs-do-removal (tins) "\
  674. Remove files.
  675. Args: TINS.
  676. TINS is a list of tins that the
  677. user wants to delete. The files are deleted. If the type of
  678. the tin is 'UNKNOWN the tin is removed from the buffer. If it
  679. is anything else the file is added to a list that should be
  680. `cvs remove'd and the tin is changed to be of type 'REMOVED.
  681.  
  682. Returns a list of tins files that should be `cvs remove'd." (byte-code "È ˆÉÊ\"ˆ…ËÌÍG\"!ƒrÇ…l@Î
  683. \"Ï !Ð=†1Ñ=?…bÒÓ
  684. !!ˆÔ=†DÕ=ƒNÖ
  685. \"‚b
  686.     B‰ˆ× Ð\"ˆØ Ç\"ˆÙ
  687. \"+ˆA‰ˆ‚ˆ    )‚sLJ" [tins files-to-remove tin fileinfo cvs-cookie-handle type t nil cvs-use-temp-buffer mapcar cvs-insert-full-path yes-or-no-p format "Delete %d files? " tin-cookie cvs-fileinfo->type REMOVED CVS-REMOVED delete-file cvs-full-path UNKNOWN MOVE-AWAY tin-delete cvs-set-fileinfo->type cvs-set-fileinfo->handled tin-invalidate] 15))
  688.  
  689. (defun cvs-mode-remove-file nil "\
  690. Remove all marked files." (interactive) (byte-code "ÁˆÄÅ !?ƒÁ‚3Æ ˆÇÈ!ˆÉ
  691. ƒ%Ê ËE‚&Ì#ƒ0ÍÎ!‚3ÇÏ!)‡" [files-to-remove nil cvs-program cvs-cvsroot cvs-do-removal cvs-get-marked cvs-use-temp-buffer message "removing from repository..." cvs-execute-list "-d" "remove" ("remove") error "CVS exited with non-zero exit status." "removing from repository... done."] 10))
  692.  
  693. (defun cvs-mode-undo-local-changes nil "\
  694. Undo local changes to all marked files.
  695. The file is removed and `cvs update FILE' is run." (interactive) (byte-code "ɈʠË ˆÌÍ\"ˆ…ÎÏÐG\"!…íÉ…Å@Ñ
  696. \"Ò !Ó=†ZÔ=†ZÕ=†ZÖ=†Z×=†ZØ=†ZÙ=†ZÚ=ƒÚ=?…iÛÜ
  697. !!ˆ
  698.     B‰ˆÝ Ó\"ˆÞ Æ\"ˆß
  699. \"‚»à=ƒáâã !\"‚»Ø=ƒœáä!‚»å=ƒ¨áæ!‚»ç=ƒ·áèã !\"‚»áé\"ˆA‰+ˆ‚ˆË ˆêë!ˆì    ƒÞíîE‚ßï#ƒéáð!‚ìêñ!))‡" [tins-to-undo files-to-update tin fileinfo cvs-cookie-handle type t cvs-program cvs-cvsroot nil cvs-get-marked cvs-use-temp-buffer mapcar cvs-insert-full-path yes-or-no-p format "Undo changes to %d files? " tin-cookie cvs-fileinfo->type UPDATED MODIFIED MERGED CONFLICT CVS-REMOVED REM-CONFLICT MOVE-AWAY REMOVED delete-file cvs-full-path cvs-set-fileinfo->type cvs-set-fileinfo->handled tin-invalidate MOD-CONFLICT error "Use cvs-mode-add instead on %s." cvs-fileinfo->file-name "Can't deal with a file you have removed and recreated." DIRCHANGE "Undo on directories not supported (yet)." ADDED "There is no old revision to get for %s" "cvs-mode-undo-local-changes: can't handle an %s" message "Regetting files from repository..." cvs-execute-list "-d" "update" ("update") "CVS exited with non-zero exit status." "Regetting files from repository... done."] 27))
  700.  
  701. (defun cvs-mode-acknowledge nil "\
  702. Remove all marked files from the buffer." (interactive) (byte-code "ÀˆÁÂà\"‡" [nil mapcar (lambda (tin) (byte-code "    \"‡" [cvs-cookie-handle tin tin-delete] 3)) cvs-get-marked] 4))
  703.  
  704. (defun cvs-mode-unmark-up (pos) "\
  705. Unmark the file on the previous line.
  706. Takes one argument POS, a buffer position." (interactive "d") (byte-code "ÈĠ   
  707. Å#…ÆÇ    \"Ã\"ˆÈ    \")‡" [tin cvs-cookie-handle pos nil tin-goto-previous 1 cvs-set-fileinfo->marked tin-cookie tin-invalidate] 6))
  708.  
  709. (defun cvs-mode-previous-line (arg) "\
  710. Go to the previous line.
  711. If a prefix argument is given, move by that many lines." (interactive "p") (byte-code "ˆÃ`    #‡" [cvs-cookie-handle arg nil tin-goto-previous] 4))
  712.  
  713. (defun cvs-mode-next-line (arg) "\
  714. Go to the next line.
  715. If a prefix argument is given, move by that many lines." (interactive "p") (byte-code "ˆÃ`    #‡" [cvs-cookie-handle arg nil tin-goto-next] 4))
  716.  
  717. (defun cvs-add-file-update-buffer (tin) "\
  718. Subfunction to cvs-mode-add. Internal use only.
  719. Update the display. Return non-nil if `cvs add' should be called on this
  720. file. Args: TIN.
  721. Returns 'ADD or 'RESURRECT." (byte-code "Ä    
  722. \"Å!Æ=ƒÇÈ\"ˆÉ    
  723. \"ˆÊ‚3Å!Ë=…3ÇÌ\"ˆÍÃ\"ˆÉ    
  724. \"ˆÎ)‡" [fileinfo cvs-cookie-handle tin t tin-cookie cvs-fileinfo->type UNKNOWN cvs-set-fileinfo->type ADDED tin-invalidate ADD REMOVED UPDATED cvs-set-fileinfo->handled RESURRECT] 10))
  725.  
  726. (defun cvs-add-sub (cvs-buf candidates) "\
  727. Internal use only.
  728. Args: CVS-BUF CANDIDATES.
  729. CANDIDATES is a list of tins. Updates the CVS-BUF and returns a pair of lists.
  730. The first list is unknown tins that shall be `cvs add -m msg'ed.
  731. The second list is removed files that shall be `cvs add'ed (resurrected)." (byte-code "ÄÄ
  732. …2Å
  733. @! Æ=ƒ
  734. @B‰‚( Ç=…(
  735. @    B‰)ˆ
  736. A‰ˆ‚ˆ    B*‡" [add resurrect candidates type nil cvs-add-file-update-buffer ADD RESURRECT] 4))
  737.  
  738. (defun cvs-mode-add nil "\
  739. Add marked files to the cvs repository." (interactive) (byte-code "LjpÈÉ \"    @    A
  740. …ÊË! †
  741. …\"Ì ˆ …IÍÎ!ˆÏ ƒ;ÐÑE‚<Ò#ƒFÓÔ!‚IÍÕ!ˆ
  742. …vÍÖ!ˆÏ
  743. ƒe×ÐÑØ %‚iÑØ E#ƒsÓÔ!‚vÍÕ!-‡" [buf result added resurrect msg cvs-program cvs-cvsroot nil cvs-add-sub cvs-get-marked read-from-minibuffer "Enter description: " cvs-use-temp-buffer message "Resurrecting files from repository..." cvs-execute-list "-d" "add" ("add") error "CVS exited with non-zero exit status." "Done." "Adding new files to repository..." list "-m"] 18))
  744.  
  745. (defun cvs-mode-ignore nil "\
  746. Arrange so that CVS ignores the selected files.
  747. This command ignores files that are not flagged as `Unknown'." (interactive) (byte-code "ÀˆÁÂà\"‡" [nil mapcar (lambda (tin) (byte-code "Âà   \"!Ä=…Åà   \"!ˆÆ    \"‡" [cvs-cookie-handle tin cvs-fileinfo->type tin-cookie UNKNOWN cvs-append-to-ignore tin-delete] 7)) cvs-get-marked] 4))
  748.  
  749. (defun cvs-append-to-ignore (fileinfo) "\
  750. Append the file in fileinfo to the .cvsignore file" (byte-code "ˇ" [fileinfo cvs-sort-ignore-file nil ((byte-code "ÃÄÅ!!ÆP!qˆdbˆÇi!?…ÈcˆÉÊ!È\"ˆ    …(ËÂed#ˆÌ ‡" [fileinfo cvs-sort-ignore-file nil find-file-noselect file-name-as-directory cvs-fileinfo->dir ".cvsignore" zerop "
  751. " insert cvs-fileinfo->file-name sort-lines save-buffer] 10))] 1))
  752.  
  753. (defun cvs-mode-status nil "\
  754. Show cvs status for all marked files." (interactive) (byte-code "ĈŠˆÆ Ç ˆÈÉ!ˆÊ    
  755. ƒ Ë
  756. Ì BBB‚#Ì B#ƒ-ÍÎ!‚0ÈÏ!)‡" [marked cvs-program cvs-cvsroot cvs-status-flags nil save-some-buffers cvs-get-marked cvs-use-temp-buffer message "Running cvs status ..." cvs-execute-list "-d" "status" error "CVS exited with non-zero exit status." "Running cvs status ... Done."] 11))
  757.  
  758. (defun cvs-mode-log nil "\
  759. Display the cvs log of all selected files." (interactive) (byte-code "ĈŠÆ ˆÇÈ!ˆÉ    
  760. ƒÊ
  761. Ë BBB‚ Ë B#ƒ*ÌÍ!‚-ÇÎ!)‡" [marked cvs-program cvs-cvsroot cvs-log-flags nil cvs-get-marked cvs-use-temp-buffer message "Running cvs log ..." cvs-execute-list "-d" "log" error "CVS exited with non-zero exit status." "Running cvs log ... Done."] 10))
  762.  
  763. (defun cvs-byte-compile-files nil "\
  764. Run byte-compile-file on all selected files that end in '.el'." (interactive) (byte-code "ˆà…\"Ä@!ÅÆ    \"…Ç    !)ˆA‰ˆ‚)‡" [marked filename nil cvs-get-marked cvs-full-path string-match "\\.el$" byte-compile-file] 7))
  765.  
  766. (defun cvs-insert-full-path (tin) "\
  767. Insert full path to the file described in TIN in the current buffer." (byte-code "ÁÂÃ!\"c‡" [tin format "%s
  768. " cvs-full-path] 4))
  769.  
  770. (defun cvs-mode-add-change-log-entry-other-window (pos) "\
  771. Add a ChangeLog entry in the ChangeLog of the current directory.
  772. Args: POS." (interactive "d") (byte-code "ňp
  773. ÆÇÈ É \"\"!!‰ˆ
  774. ?…    ‰ˆÊ ˆqˆ    ‰*‡" [cvs-buf odir default-directory cvs-cookie-handle pos nil file-name-as-directory cvs-fileinfo->dir tin-cookie tin-locate add-change-log-entry-other-window] 7))
  775.  
  776. (defun print-cvs-tin (foo) "\
  777. Debug utility." (byte-code "Ä    
  778. \"ÅÆ!ÇÈ \"ˆÇÉ! \"ˆÇÊ \"ˆÇË! \"ˆÇÊ \"ˆÇÌ! \"ˆÇÊ \"ˆÇÍ! \"ˆÇÊ \"*‡" [cookie cvs-cookie-handle foo stream tin-cookie get-buffer-create "debug" princ "==============
  779. " cvs-fileinfo->file-name "
  780. " cvs-fileinfo->dir cvs-fileinfo->full-log cvs-fileinfo->marked] 17))
  781.  
  782. (defun cvs-mode-emerge (pos) "\
  783. Emerge appropriate revisions of the selected file.
  784. Args: POS" (interactive "d") (byte-code "ɈpÊ
  785. \"    ƒ~Ë
  786.     \"Ì !Í=ƒ>ÎÏ!ˆÐ !юÒÇÓ !Ó !$?…9ÔÕ!))‚zÖ=†G×=ƒvÎÏ!ˆÐ !Ð Ø !\"َÚÇÛ !Ó !%?…qÔÕ!)*‚zÔÜÝ\"*‚ÔÞ!*‡" [cvs-buf tin cvs-cookie-handle pos fileinfo type tmp-file t ancestor-file nil tin-locate tin-cookie cvs-fileinfo->type MODIFIED require emerge cvs-retrieve-revision-to-tmpfile ((byte-code "Á!‡" [tmp-file delete-file] 2)) emerge-files cvs-fileinfo->full-path error "Emerge session failed" MERGED CONFLICT cvs-fileinfo->base-revision ((byte-code "Â!ˆÂ    !‡" [tmp-file ancestor-file delete-file] 3)) emerge-files-with-ancestor cvs-fileinfo->backup-file "Can only emerge \"Modified\", \"Merged\" or \"Conflict\"%s" " files" "There is no file to emerge."] 21))
  787.  
  788. (defun cvs-retrieve-revision-to-tmpfile (fileinfo &optional revision) "\
  789. Retrieve the latest revision of the file in FILEINFO to a temporary file.
  790. If second optional argument REVISION is given, retrieve that revision instead." (byte-code "ÈÉÊË!†        !Ì
  791. Q!Í!ˆ
  792. ƒÎÏ
  793. \"‚!ÎÐ!ˆÑ ÅÅÅÒÓÔ
  794. ƒ7Õ
  795. ÖQ‚8ר!Ù&& …QÚ !…PÛ !?…XÜÝ \"ˆ
  796. ƒdÎÞ
  797. \"‚gÎß!ˆà!ˆ))‡" [temp-name cvs-tempdir revision res cvs-shell nil cvs-program fileinfo make-temp-name file-name-as-directory getenv "TMPDIR" "pcl-cvs." cvs-kill-buffer-visiting message "Retrieving revision %s..." "Retrieving latest revision..." call-process "-c" concat " update -p " "-r " " " "" cvs-fileinfo->full-path " > " integerp zerop error "Something went wrong: %s" "Retrieving revision %s... Done." "Retrieving latest revision... Done." find-file-noselect] 20))
  798.  
  799. (defun cvs-fileinfo->backup-file (fileinfo) "\
  800. Construct the file name of the backup file for FILEINFO." (byte-code "Â!…    Ã!ÄÂ!R‡" [fileinfo cvs-bakprefix cvs-fileinfo->base-revision cvs-fileinfo->file-name "."] 7))
  801.  
  802. (defun cvs-kill-buffer-visiting (filename) "\
  803. If there is any buffer visiting FILENAME, kill it (without confirmation)." (byte-code " …ÃÄ@!    \"…Å@!ˆA‰ˆ‚)‡" [l filename buffer-list string= buffer-file-name kill-buffer] 7))
  804.  
  805. (defun cvs-change-cvsroot (newroot) "\
  806. Change the cvsroot." (interactive "DNew repository: ") (byte-code "ˆÃÄÅ\"!†ÆÇÈP!…‰‡" [newroot cvs-cvsroot nil file-directory-p expand-file-name "CVSROOT" y-or-n-p "Warning: no CVSROOT found inside repository." " Change cvs-cvsroot anyhow?"] 5))
  807.  
  808. (if (string-match "Lucid" emacs-version) (progn (autoload (quote pcl-cvs-fontify) "pcl-cvs-lucid") (add-hook (quote cvs-mode-hook) (quote pcl-cvs-fontify))))
  809.